package com.sxj.corejava.code04_循环结构;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2025年01月03日
 * 用户输入一个奇数的数字,在控制台通过星号*打印菱形
 * 输入的数字表示图形的行数
 *       *
 *     * * *
 *   * * * * *
 * * * * * * * *
 *   * * * * *
 *     * * *
 *       *
 */
public class Test14_打印菱形 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入菱形的行数:");
        int rows = sc.nextInt();
        if (rows % 2 != 0) {
            // 菱形可以看做由部分组成,上半部分为等腰三角形,下半部分为倒等腰三角形

            // 先打印等腰三角形
            // 此时等腰三角形的行数为总行数的一半+1
            int rows1 = rows / 2 + 1;
            for (int i = 1; i <= rows1; i++) {

                // 先打印空格
                for (int j = 1; j <= rows1 - i; j++) {
                    System.out.print("  ");
                }

                // 再打印星号
                for (int j = 1; j <= 2 * i - 1; j++) {
                    System.out.print("* ");
                }
                // 内层循环结束之后换行
                System.out.println();
            }

            // 再打印倒等腰三角形
            // 剩余的倒等腰三角形行数为总行数的一半
            int rows2 = rows / 2;
            for (int i = 1; i <= rows2; i++) {

                // 先打印空格,此时每一行内容均会多出一个空格
                for (int j = 1; j <= i; j++) {
                    System.out.print("  ");
                }
                // 后打印星号
                for (int j = 1; j <= 2 * (rows2 - i) + 1; j++) {
                    System.out.print("* ");
                }
                // 换行
                System.out.println();
            }

        } else {
            System.out.println("错误:菱形的行数必须是一个奇数!");
        }
    }
}
